Most of the content available on the Internet is associated with Universal Resource Locators (URL), which reference content servers by their domain names. To request the content from a specific content server, its domain name must be translated to a numerical IP address. This translation is performed by the Domain Name Service (DNS). Before issuing content request, the client computer asks a DNS server to map requested domain name to an IP address. The client may cache the DNS response for an allowed interval (time to leave or time to live: TTL), but must issue new DNS request if caching time expires, or if requested domain is not stored in the DNS cache.
Each DNS request increases the time required to fetch the content: the client must wait to receive the DNS response before issuing a content request. A slow DNS server may decrease the perceived speed of Internet even when content servers are fast. If a DNS response contains a CNAME record (alias of one domain name to another), the client may need to issue another DNS request, further delaying content retrieval. DNS latency is especially high for mobile networks and can reach 200 to 300 ms for 3G networks.
One known way to suppress client-side DNS requests is to send HTTP or HTTPS traffic from the client computer through a proxy server, while supplying domain name with each content request. If the client-side application is aware that it's connected trough the proxy server (for instance, Internet Explorer browser, distributed by Microsoft Corporation, provides support for proxy settings), it doesn't issue DNS requests. Instead, the proxy server issues its own DNS requests for specified domains.
Shifting DNS resolution to a proxy server usually decreases overall latency (especially when client is connected to the mobile network) as well as client-side data traffic. If multiple users are connected to the same proxy server with large DNS cache, it increases the probability that requested DNS response is already cached, further increasing performance. However, multiple client applications, especially on mobile devices, do not support proxy settings and continue to issue DNS requests even when being connected through a proxy server that discards client-side DNS results and issues its own DNS requests. Client-side DNS requests are also discarded when client is connected through a VPN server that terminates HTTP and/or HTTPS connections and uses its own DNS resolver.
Therefore, there is a need to decrease number of DNS requests from the client computer over the computer network, especially when client computer is connected to a proxy or VPN server.